/**
 * 数据转换工具函数
 */
import type { ExtractedFields } from '../types/customs';

/**
 * 转换后端返回的fields_data为前端使用的ExtractedFields格式
 */
export const transformFieldsData = (fieldsData: Record<string, any>): ExtractedFields => {
  const result: ExtractedFields = {};

  Object.entries(fieldsData).forEach(([fieldName, fieldValue]) => {
    if (fieldName === '项目') {
      // 处理项目数组
      if (Array.isArray(fieldValue.项目)) {
        result.项目 = fieldValue.项目.map((item: any) => ({
          项号: item.项号?.text || '',
          商品编号: item.商品编号?.text || '',
          商品名称及规格型号: item.商品名称及规格型号?.text || '',
          数量及单位: item.数量及单位?.text || '',
          '单价/总价/币制': item['单价/总价/币制']?.text || '',
          原产国: item.原产国?.text || '',
          最终目的国: item.最终目的国?.text || '',
          境内目的地: item.境内目的地?.text || '',
          征免: item.征免?.text || '',
        }));
      }
    } else {
      // 处理普通字段
      const value = fieldValue[fieldName];
      if (value && typeof value === 'object' && 'text' in value) {
        (result as any)[fieldName] = value.text;
      }
    }
  });

  return result;
};

/**
 * 生成模拟的提取结果列表（用于显示成功/失败状态）
 */
export const generateExtractionResults = (
  fieldsData: Record<string, any>
): Array<{ field: string; success: boolean }> => {
  const results: Array<{ field: string; success: boolean }> = [];

  Object.entries(fieldsData).forEach(([fieldName, fieldValue]) => {
    if (fieldName === '项目') {
      // 检查项目是否有数据
      const hasData = Array.isArray(fieldValue.项目) && fieldValue.项目.length > 0;
      results.push({
        field: fieldName,
        success: hasData,
      });
    } else {
      // 检查字段是否有值
      const value = fieldValue[fieldName];
      const hasValue = value && typeof value === 'object' && 'text' in value && value.text !== '';
      results.push({
        field: fieldName,
        success: hasValue,
      });
    }
  });

  return results;
};

/**
 * 将前端ExtractedFields格式转换回后端fields_data格式
 */
export const transformToBackendFormat = (extractedFields: ExtractedFields): Record<string, any> => {
  const fieldsData: Record<string, any> = {};

  Object.entries(extractedFields).forEach(([fieldName, value]) => {
    if (fieldName === '项目') {
      // 处理项目数组
      if (Array.isArray(value)) {
        fieldsData.项目 = {
          项目: value.map((item: any) => ({
            项号: { text: item.项号 || '' },
            商品编号: { text: item.商品编号 || '' },
            商品名称及规格型号: { text: item.商品名称及规格型号 || '' },
            数量及单位: { text: item.数量及单位 || '' },
            '单价/总价/币制': { text: item['单价/总价/币制'] || '' },
            原产国: { text: item.原产国 || '' },
            最终目的国: { text: item.最终目的国 || '' },
            境内目的地: { text: item.境内目的地 || '' },
            征免: { text: item.征免 || '' },
          })),
        };
      }
    } else {
      // 处理普通字段
      fieldsData[fieldName] = {
        [fieldName]: {
          text: value || '',
        },
      };
    }
  });

  return fieldsData;
};

